import Request from 'luch-request';

// pinia中的数据
import {
  useloginStore
} from '@/store/user.js'

const http = new Request({
  baseURL: "https://consult-api.itheima.net",
  custom: {
    loading: false
  }
})

import pagesJson from '@/pages.json';


// 请求拦截器
http.interceptors.request.use(function(config) {

  // 获取token
  const token = useloginStore().token

  // 不需要token的页面
  const whitePathList = ['/login', '/code', '/login/password']

  // 默认config配置
  const defaultConfig = {}

  if (token && !whitePathList.includes(config.url)) {
    defaultConfig['authorization'] = `Bearer ${token}`
  }

  config.header = {
    ...defaultConfig,
    ...config.header
  }

  // 在发送请求之前做些什么
  if (config.custom.loading) {
    uni.showLoading({
      title: "加载中"
    })
  }


  return config;
}, error => {
  // 对请求错误做些什么
  return Promise.reject(error);
});


// 响应拦截器
http.interceptors.response.use(response => {

  uni.hideLoading({
    title: "加载完成"
  })

  return response;
}, error => {

  // 判断当前登录是否为token失效
  if (error.statusCode === 401) {
    console.log(123);
    // 获取当前页面信息
    const pages = getCurrentPages()



    const tabbarList = pagesJson.tabBar.list.map(item => item.pagePath)


    // 判断当前页面是否为tabbar页面
    if (!tabbarList.includes(pages[0].route)) {
      useloginStore().openType = 'redirectTo'
    } else {
      useloginStore().openType = 'switchTab'
    }

    useloginStore().redictUrl = pages[0].route

    uni.utils.toast("当前登录状态已过期，请重新登录！")

    uni.redirectTo({
      url: "/pages/login/login"
    })



  }

  uni.hideLoading({
    title: "加载完成"
  })
  return Promise.reject(error);
});



export {
  http
}